package cn.mjnxin.iot.connector.message;

import cn.mjnxin.iot.connector.context.IConnectorContext;

/**
 * 抽象的报文句柄
 * @author CLG 2023年10月10日
 * @version V1.0.0
 */
public interface IMessageHandle<T extends IMessage<?>>{
	boolean logMessage(IMessage<?> message, boolean isRefreshStatusTime);
	/**
	 * 返回具体的报文构造器
	 * @return
	 */
	IMessageReceiver<T> getMessageReceiver();

	/**
	 * 返回具体的报文构造器
	 * @return
	 */
	IMessageSender<T> getMessageSerder();
	
	/**
	 * 返回连接上下文
	 * @return
	 */
	IConnectorContext connectorContext();
	
	/**
	 * 基本长度，起始标识串校验
	 * @param messageHex
	 * @return
	 */
	boolean validate(String messageHex);

	/**
	 * @return the pid
	 */
	int getPid();
	
	void onPeerOffline(String peerAddress, String deviceNo, String cause, boolean isTimeout);
	
	void changePeerLink(String oldAddress, String peerAddress, String peerNo);
}
